package cn.cy.creation.d03Base;

public class Client {

    // 0 用户：工厂只生产产品，用户让工厂生产产品、用户使用产品的功能
    public static void main(String[] args) {
        Product product = SimpleFactory.makeProduct(0);
        product.show();
    }

    // 1 简单工厂
    static class SimpleFactory {
        static Product makeProduct(int kind) {
            switch (kind) {
                case 0:
                    return new ConcreteProduct1();
                case 1:
                    return new ConcreteProduct2();
            }
            return null;
        }
    }

    // 2 抽象产品
    interface Product {
        void show();
    }

    // 3 具体产品1
    static class ConcreteProduct1 implements Product {
        @Override
        public void show() {
            System.out.println("具体产品1显示...");
        }
    }

    // 3 具体产品2
    static class ConcreteProduct2 implements Product {
        @Override
        public void show() {
            System.out.println("具体产品2显示...");
        }
    }
    
}
